#include<iostream>
#include<algorithm>
#include<unordered_map>
using namespace std;

const int N=1010;
struct node{
	int l, r;
}arr[N];

int disc[4*N], ret[4*N];
unordered_map<int, int> mp;
bool sign[4*N];

int main()
{
	int n, m; cin>>n>>m;
	int cnt=0;
	for(int i=1; i<=m; i++)
	{
		cin>>arr[i].l>>arr[i].r;
		disc[++cnt]=arr[i].l;
		disc[++cnt]=arr[i].r;
		disc[++cnt]=arr[i].l+1;
		disc[++cnt]=arr[i].r+1;
	}
	
	sort(disc+1, disc+1+cnt);
	cnt=unique(disc+1, disc+1+cnt)-(disc+1);
	for(int i=1; i<=cnt; i++)
	{
		mp[disc[i]]=i;
	}
	int k=1;
	for(int i=1; i<=m; i++)
	{
		int a=mp[arr[i].l];
		int b=mp[arr[i].r];
		while(a<=b)
		{
			ret[a]=k;
			a++;
		}
		k++;
	}
	int sum=0;
	for(int i=1; i<=cnt; i++)
	{
		if(!ret[i] || sign[ret[i]]==true) continue;
		sign[ret[i]]=true;
		sum++;
	}
	cout<<sum;
	return 0;
}
